package com.dzm;

import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

/**
 * 作者：Dzm
 * 时间：2024-07-26-18:30
 * 功能：
 */
public class Test01 {

}

class TCPServer {

    /**
     * 写一个TCP/IP的聊天程序，实现客户端与服务器端发送信息，服务器端将接收到的信息，输出
     * 到F盘的message.txt文件中，以‘end’结束。
     *  分析：
     *      1.创建服务器
     *      2.与端口获取连接
     *      3.结束客户端传来的数据
     *      4.将数据存入文件
     *      5.如果消息为end结束
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        //创建服务端口
        ServerSocket serverSocket = new ServerSocket(8000);
        //接收连接
        Socket socket = serverSocket.accept();
        //读取数据
        InputStream is = socket.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);

        //将接收到的消息存入文件
        FileOutputStream fw = new FileOutputStream("Test-03\\src\\com\\dzm\\file\\message.txt", true);
        OutputStreamWriter osw = new OutputStreamWriter(fw);
        PrintWriter pw = new PrintWriter(osw, true);

        while (true) {
            //消息接收
            String s = br.readLine();
            System.out.println("客户端说："  + s);
            //将消息存入文件
            pw.println(s);
            //消息为end则结束
            if("end".equalsIgnoreCase(s))break;
        }

        //资源关闭
        br.close();
        pw.close();
        socket.close();
        serverSocket.close();
    }
}

class TCPClient {

    /**
     * 分析：
     *     1.创建客户端并连接服务器
     *     2.键盘输入消息
     *     3.消息发送
     *     4.消息为end则结束
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        //创建客户端口
        Socket socket = new Socket("localhost", 8000);
        //信息输出
        OutputStream os = socket.getOutputStream();
        PrintWriter pw = new PrintWriter(os, true); //开启缓存自动刷新

        //获取键盘输入信息
        Scanner scanner = new Scanner(System.in);

        while (true) {
            System.out.print("请输入消息：");
            String s = scanner.next();
            //消息发送
            pw.println(s);
            //end为结束
            if("end".equalsIgnoreCase(s)) break;
        }

        //资源关闭
        pw.close();
        scanner.close();
        socket.close();
    }
}
